﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dados;
using System.ComponentModel;

namespace Negocios
{   
    [DataObject]
    public class EspecificacaoBLL
    {
        [DataObjectMethodAttribute(DataObjectMethodType.Insert, true)]
        public bool Insere(Especificacao a)
        {
            try
            {
                return EspecificacaoDAL.Insere(a.Tipo, a.Largura, a.Altura, a.Bitrate);
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao inserir entidade");
            }
        }

        public Especificacao Consultar(int codigo)
        {
            DSMPTUDO.T_ESPECIFICACAODataTable EspecificacaoDT = EspecificacaoDAL.ConsultaPorCodigo(codigo);
            if(EspecificacaoDT.Count ==1)
                return (new Especificacao(codigo,EspecificacaoDT[0].nr_tipo,EspecificacaoDT[0].nr_largura, EspecificacaoDT[0].nr_altura, EspecificacaoDT[0].nr_bitrate));
            else 
            return null;
        }


        public bool Atualizar(Especificacao a)
        {
            try
            {
                return EspecificacaoDAL.Atualiza(a.Codigo, a.Tipo, a.Largura, a.Altura, a.Bitrate);
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao atualizar entidade");
            }
        }

        public bool Excluir(Especificacao a)
        {
            try
            {
                return EspecificacaoDAL.Revome(a.Codigo);
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao Remover Entidade" + a.Tipo);
            }

        }

        public static List<Especificacao> ConsultaTodos()
        {
            List<Especificacao> Lista = new List<Especificacao>();

            DSMPTUDO.T_ESPECIFICACAODataTable especificacaoDT = EspecificacaoDAL.ConsultaTodos();
            for (int i = 0; i < especificacaoDT.Count; i++)
            {
                Especificacao e = new Especificacao(especificacaoDT[i].nr_codigo, especificacaoDT[i].nr_tipo, especificacaoDT[i].nr_largura, especificacaoDT[i].nr_altura, especificacaoDT[i].nr_bitrate);
                Lista.Add(e);
            }
            return Lista;
        }

        public struct EspecificacaoVisao
        {
            private string nome;

            public string Nome
            {
                get { return nome; }
                set { nome = value; }
            }
            private int id;

            public int Id
            {
                get { return id; }
                set { id = value; }
            }
        }

        public static List<EspecificacaoVisao> ConsultaTodosVisao()
        {
            List<EspecificacaoVisao> ListaVisao = new List<EspecificacaoVisao>();

            DSMPTUDO.T_ESPECIFICACAODataTable especificacaoDT = EspecificacaoDAL.ConsultaTodos();
            for (int i = 0; i < especificacaoDT.Count; i++)
            {
                EspecificacaoVisao ev = new EspecificacaoVisao();
                if (especificacaoDT[i].nr_tipo==1)
                    ev.Nome = "Imagem/Vídeo: " + especificacaoDT[i].nr_largura + "x" + especificacaoDT[i].nr_altura;
                else ev.Nome = "Áudio: " + especificacaoDT[i].nr_bitrate + "bps";
                ev.Id = especificacaoDT[i].nr_codigo;
                ListaVisao.Add(ev);
            }
            return ListaVisao;
        }
    }
}